package com.itheima.reggie.common;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.sql.SQLIntegrityConstraintViolationException;

/**
 * @author ：石破天
 * @date ：Created in 2022年12月18日
 * @description ：
 *    全局异常处理器
 * @version: 1.0
 */
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    /*
     针对不同异常 进行处理
        处理器方法 ？  先抓取到指定的异常  对指定异常进行处理
     */
    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
    public R<String> exceptionHandler(SQLIntegrityConstraintViolationException e) {
        log.info("查看一下异常信息:" + e.getMessage());
        // 查看一下异常信息:Duplicate entry 'jiejie' for key 'idx_username'
        //                Column 'lieming' cannot be null
        if (e.getMessage().contains("Duplicate entry")) {
//             e.getMessage()  "Duplicate entry 'jiejie' for key 'idx_username'"
            String n = e.getMessage().split(" ")[2];
            return R.error("数据" + n + "重复了");
        } else if (e.getMessage().contains("cannot be null")) {
            // Column 'lieming' cannot be null
            String n = e.getMessage().split(" ")[1];
            return R.error("该" + n + "不能为空");
        } else {
            return R.error("未知问题，请按照页面提示操作！");
        }

    }


    @ExceptionHandler(CustomException.class)
    public R<String> exceptionHandler(CustomException e){
        log.info("查看当前异常信息:"+e.getMessage());

        return R.error(e.getMessage());
    }
}

